home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / demo / mag / obligement17.lha / Obligement17 / textes / OB17-assembleur < prev    next >
Text File  |  1999-09-02  |  6KB  |  147 lines

  1. \T
  2.  
  3. þ==================================================
  4. þ --> EN PRATIQUE : PROGRAMMATION EN ASSEMBLEUR par Jay
  5. þ==================================================
  6.  
  7.    (NDDaff : Attention, dans les exemples de code, des "-" remplacent les "tir_s de bas
  8. de ligne" car notre moteur en Blitz Basic ne peut afficher ce caract_re)
  9.  
  10. ÷   C'est quoi l'Assembleur ?
  11.    L'assembleur est le langage de programmation par excellence. Vous connaissez
  12. certainement le basic. Sur Amiga, les 3 basic principaux sont : l'Amos, le Blitz et le
  13. HiSoft Basic. Quand vous programmez en Basic, vous utilisez des instructions texte
  14. _vidente telles que print (imprimer) qui sont ensuite soit compil_es soit interpr_t_es.
  15. Le probl_me est qu'a pars les instructions fournit dans le Basic, vous ne pouvez pas
  16. vraiment faire ce que vous voulez. La programmation en Assembleur est totalement
  17. diff_rente. Grace a l'Asm, il vous est possible de faire n'importe quoi. Vous n'utiliser
  18. plus que des instructions pr_-fabriqu_es... Au contraire, vous allez directement taper
  19. dans le Hardware de l'Amiga pour faire votre programme. On comprend vite pourquoi les
  20. codeurs de d_mos ont choisis l'Assembleur : au lieux d'utiliser de lentes instructions
  21. de Basic, ils peuvent aller bidouiller chaque composante de la carte m_re de l'Amiga
  22. pour faire de la 3D toujours plus rapide et plus bourrine.
  23.  
  24. ÷   Les registres
  25.    Bon, pour coder en Assembleur, il faut que vous compreniez bien une chose essentielle.
  26. Quoi que vous vouliez faire, vous allez forcement utiliser les registres. D'un cot_, on a
  27. les registres d'adressage et de l'autre, les registres de donn_es.
  28.  
  29. ö
  30.  
  31. \T
  32.  
  33.  REGISTRES         REGISTRES
  34.  D'ADRESSAGE      DE DONNEES
  35.  -----------------------------
  36.  A(0)                D(0)
  37.  A(1)                 D(1)
  38.  A(2)                D(2)
  39.  A(3)                D(3)
  40.  A(4)                D(4)
  41.  A(5)                D(5)
  42.  A(6)                D(6)
  43.  -----------------------------
  44.  
  45.  
  46.  ^ les registres d'adressages :
  47.    Ces derniers servent a stocker des adresses... Sans d_conner ??? Par exemple, si vous
  48. ouvrez une library, vous stocker son adresse au hazard en A(6). Les registres d'adresses
  49. sont au nombre de 7 a savouir de A(0) a A(6).
  50.  
  51.  ^ les registres de donn_es :
  52.    Idem que les registres d'adressages : Au nombre de 7 (de D(0) a D(6)), ils servent a
  53. stocker des donn_es num_riques ou textuelles.
  54.  
  55. ÷   Exemples siou plait m'sieur !
  56.    Bon, puisque vous insistez lourdement, je vais vous donner des petits exemples... On ne
  57. va voir ici un programme complet, mais juste des instructions au hazard pour vous
  58. instruire un peu.
  59.  
  60.  
  61. ö
  62.  
  63. \T
  64.  
  65.  
  66.  
  67.  ^ Bouge de la...
  68.    Bon, je vous ai parl_ des registres de donn_es et d'adressages. Maintenant, on va voir
  69. comment on peut d_placer le contenue de D(0) en D(4).
  70.  
  71. å   move D(0),D(4)
  72.  
  73.    Et ouaip, c'est pas plus compliqu_ que ca. Move est l'instruction qui sert a d_placer
  74. et on lui pr_cise ici que c'est le contenue de D(0) qui bouge en D(4). Et si on voulait
  75. d_placer le contenu du registre d'adressage A(5) en A(3) ?
  76.  
  77. move A(5),A(3)
  78.  
  79.    Autrement dit, l'instruction est exactement le m_me sauf qu'on remplace nos deux
  80. registres de donn_es (D(0) et D(4)) par deux registres d'adressages (A(5) et A(3).
  81.  
  82.  
  83.  ^ Va voir ailleur si j'y suis
  84.    Bon, si vous voulez vous mettre a l'Assembleur, c'est que vous avez surement d_ja un
  85. peu touch_ au Basic. En Basic, on utilise une instruction toute conne pour aller a un
  86. endroit du programme... Gosub. En Assembleur, cette instruction existe aussi mais ne
  87. poss_de pas le nom, c'est JSR. De la m_me mani_re que le Basic, on place des _tiquettes
  88. dans le code et on peux s'y rebdre quand on veux. Aller, tr_ve de blabla, un exemple :
  89.  
  90. ö
  91.  
  92. \T
  93.  
  94.  
  95.  
  96. å   -Rulez
  97. å   JSR   -AcidOZine
  98. å   move  d(1),d(4)
  99. å   -AcidOZine
  100. å   JSR   -Rulez
  101.  
  102.  
  103.    Bon, dans l'exemple a la con que je viens de faire, on utilise deux instructions
  104. diff_rentes : move dx,dx que l'on a vu pr_c_demment et JSR -XXX que l'on est en train
  105. de voir. A savoir que JSR, c'est les initiales de Jump to Sub Routine qui veux dire
  106. Saute a la sous routine dont le nom est plac_ juste apr_s JSR.
  107.  
  108.  
  109.    Pour en venir a ce petit programme : la premi_re ligne est une _tiquette. La
  110. deuxi_me ligne dit a l'ordinateur de sauter a la sous routine -AcidOZine. La troisieme
  111. ligne d_place le contenu de d(1) en d(4). La quatri_me est l'_tiquette -AcidOZine et
  112. la cinqui_me dit de sauter a l'_tiquette -Rulez. Donc, dans le concret, l'ordinateur
  113. passe la premi_re ligne puis en ob_issant aux ordres de JSR, saute a l'_tiquette
  114. -AcidOZine. Arriv_ la, il rencontre une autre instruction JSR qui lui dit d'aller a
  115. l'_tiquette -Rulez et il recommence a l'infinie sans jamais s'arr_ter... Et notre
  116. instruction move, la dedans, elle sert a quoi ? Bin a que dalle puisque on saute par
  117. dessus, mais ca fesait plus style avec move entre les deux.
  118.  
  119. ö
  120.  
  121. \T
  122.  
  123.  
  124.  
  125.  INSTRUCTIONS     CA SERT A QUOI
  126.  ---------------------------------
  127.  ADD                ADDITION
  128.  ADDA              ADDITION AVEC RESULTAT
  129.                      STOCKE EN Ax
  130.  AND                ET LOGIQUE
  131.  SUB                SOUSTRACTION
  132.  JSR                SAUT A UNE
  133.                       SOUS ROUTINE
  134.  MOVE               DEPLACER
  135.  MOVEQ              DEPLACER VITE
  136.  OR                  OU
  137.  TST                TEST
  138.  ----------------------------------
  139.  
  140. 
  141.  
  142. ÷   Conclusion
  143.    Bon, je vais m'arr_ter la pour ce num_ro ci. En attendant, mattez les deux tableaux et
  144. essayer de bien cogitter tous ca pour la prochaine fois... car les choses s_rieuses vont
  145. bientot commencer !!!
  146.  
  147. ö